iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
自我挑戰組

自我學習Docker的30天奇幻旅程系列 第 16

Day16 Docker Compose file指令大集(三)

  • 分享至 

  • xImage
  •  

Docker Compose file的指令學習gogo,再一點就要結束了!!

指令介紹

restart

設置Docker重啟後container的動作。

flag 解說
"no" 不做任何動作(預設)
always 出現錯誤的退出才會重啟
on-failure 始終重啟(如果是手動停止的話直到Docker重啟前都不會)
unless-stopped 始終重啟(如果是手動停止的話直到自行重啟container前都不會)

security_opt

此設置會覆蓋所有image預設的label

security_opt:
  - label:user:USER
  - label:role:ROLE

stop_grace_period

此配置為,當在發送SIGKILL之前,如果container無法處理SIGTERM,停止該容器所指定需要等待的時間。

小知識:
在電腦內的訊號中,SIGKILL是用來傳送給一個process來停止它們的訊號,此訊號無法被拒絕,因此是在無法處理SIGTERM等訊號之後的最終手段。

stop_grace_period: 1s

stop_signal

設置停止時發送的訊號,預設為SIGTERM,電腦訊號如下圖有這麼多...

圖來源

sysctls

於container中設置的kernal參數,只能在一開始設置不能用修改的方式變動。

sysctls:
  net.core.somaxconn: 1024
  net.ipv4.tcp_syncookies: 0

tmpfs

可以在container內設置暫時的文件系統

tmpfs:
  - /run
  - /tmp

ulimits

ulimits用來限制process的資源利用率,以防止失控的錯誤或安全漏洞導致整個系統癱瘓。

ulimits:
  nproc: 65535
  nofile:
    soft: 20000
    hard: 40000

volumes

掛載volumes,Top level掛載的volumes可以重複使用。
我們從之前的docker compose練習的檔案來看,todo-mysql-data就是可重複使用的volumes。

version: '3.8'
services:
    app:
        image: node:12-alpine
        command: sh -c "yarn install && yarn run dev"
        ports:
            - 3000:3000
        working_dir: /app
        volumes:
            - ./:/app
        environment:
            MYSQL_HOST: mysql
            MYSQL_USER: root
            MYSQL_PASSWORD: secret
            MYSQL_DB: todos
    mysql:
        image: mysql:5.7
        volumes:
            - todo-mysql-data:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: secret
            MYSQL_DATABASE: todos

volumes:
    todo-mysql-data:
  • external
    當設置為true時,volume會建立在compose外,如果外部不存在volume則會報錯。
  • labels
    為volume添加label
  • name
    為volume設置名稱

總結:

compose file命令的學習就先到這邊了,明天就要開始來學習跟kubernetes很像的Docker Swarm,看能不能在學習中了解如何結合兩者的優勢來使用。

參考文獻:
docker官方文件


上一篇
Day15 Docker Compose file指令大集(二)
下一篇
Day17 Docker Swarm學習
系列文
自我學習Docker的30天奇幻旅程24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言